package com.zy.cat.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 /**
  * @info 清除多个键
  * @author Link
  * @date 2019-07-04 16:07
  */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD,ElementType.TYPE })
public @interface RedisEvicts {
	RedisEvict[] evict() default {};
	/**
	 * 
	 * @info 进入方法体前执行
	 * @author Link
	 * @date 2019-07-17 14:47
	 * @return true:进入方法体前执行 false:方法执行后执行
	 */
	boolean before() default true;
	
	
	
	/**
	 * 
	 * @info Redis缓存清除
	 * @author Link
	 * @date 2019-07-17 14:59
	 */
	@Retention(RetentionPolicy.RUNTIME)
	@Target({ ElementType.METHOD, ElementType.TYPE })
	public @interface RedisEvict {
		/** 缓存key */
		String key() default "";

		/** 缓存hashKey */
		String[] hashKeys() default "";

		/** 缓存数据库默认 0 */
		int db() default 0;

		/** 缓存类型 1.Value 2.Hash */
		int rtype() default 1;

		/** SQL执行时间，用于获取锁失败后，下次获取锁的等候时间。 时间类型：毫秒 ，默认200毫秒 */
		long waitExpire() default 200;

		/** 锁过期时间,0.永不过期，默认30秒 */
		long lockExpire() default 30;
	}
}